package net.lab0.nebula.gui.enums;

import net.lab0.tools.HumanReadable;

public enum PowerOfTwoLong
{
    _2(2L),
    _4(4L),
    _8(8L),
    _16(16L),
    _32(32L),
    _64(64L),
    _128(128L),
    _256(256L),
    _512(512L),
    _1Ki(1_024L),
    _2Ki(2_048L),
    _4Ki(4_096L),
    _8Ki(8_192L),
    _16Ki(16_384L),
    _32Ki(32_768L),
    _64Ki(65_536L),
    _128Ki(131_072L),
    _256Ki(262_144L),
    _512Ki(524_288L),
    _1Mi(1_048_576L),
    _2Mi(2_097_152L),
    _4Mi(4_194_304L),
    _8Mi(8_388_608L),
    _16Mi(16_777_216L),
    _32Mi(33_554_432L),
    _64Mi(67_108_864L),
    _128Mi(134_217_728L),
    _256Mi(268_435_456L),
    _512Mi(536_870_912L),
    _1Gi(1_073_741_824L),
    _2Gi(2_147_483_648L),
    _4Gi(4_294_967_296L),
    _8Gi(8_589_934_592L),
    _16Gi(17_179_869_184L),
    _32Gi(34_359_738_368L),
    _64Gi(68_719_476_736L),
    _128Gi(137_438_953_472L),
    _256Gi(274_877_906_944L),
    _512Gi(549_755_813_888L),
    _1Ti(1_099_511_627_776L),
    _2Ti(2_199_023_255_552L),
    _4Ti(4_398_046_511_104L),
    _8Ti(8_796_093_022_208L),
    _16Ti(17_592_186_044_416L),
    _32Ti(35_184_372_088_832L),
    _64Ti(70_368_744_177_664L),
    _128Ti(140_737_488_355_328L),
    _256Ti(281_474_976_710_656L),
    _512Ti(562_949_953_421_312L),
    _1Pi(1_125_899_906_842_624L),
    _2Pi(2_251_799_813_685_248L),
    _4Pi(4_503_599_627_370_496L),
    _8Pi(9_007_199_254_740_992L),
    _16Pi(18_014_398_509_481_984L),
    _32Pi(36_028_797_018_963_968L),
    _64Pi(72_057_594_037_927_936L),
    _128Pi(144_115_188_075_855_872L),
    _256Pi(288_230_376_151_711_744L),
    _512Pi(576_460_752_303_423_488L),
    _1Ei(1_152_921_504_606_846_976L),
    _2Ei(2_305_843_009_213_693_952L),
    _4Ei(4_611_686_018_427_387_904L),
    ;
    
    public final long value;
    
    private PowerOfTwoLong(long value)
    {
        this.value = value;
    }

    @Override
    public String toString()
    {
        return "" + HumanReadable.humanReadableNumber(value, false);
    }
}
